/*
 * FS.h
 *
 *  Created on: 28/09/2011
 *      Author: Luca - Anahi
 */

#ifndef FS_H_
#define FS_H_

#include <stdint.h>
#include <stdbool.h>
#include "definFat32.h"
#include "estructuras.h"

#define ARCHIVOCONFIG "/home/utn_so/Desarrollo/Workspace/FileSystem/config"

/****  Encabezados de las funciones definidas en FS.c  ****/

		t_fat32 *iniciar_fat32(const char *path);

		unsigned int obtener_cant_clusters_libres(t_fat32 *fat32);

		unsigned int obtener_cant_clusters_ocupados(t_fat32 *fat32);

		uint32_t obtener_cluster_libre(t_fat32 *fat32);

		char *obtener_contenido_cluster(t_fat32 *fat32, int numeroCluster);

		uint32_t obtener_sgte_cluster(t_fat32 *fat32, uint32_t clusterActual);

		void configurar_primerCluster_archivo(t_fat32 *fat32, t_elem_archivo *elemento,  uint32_t clusterLibre);

		bool agregar_clusters_libres(t_fat32 *fat32, t_element_fat *elemento, int cantClusters);

		bool remover_cluster(t_fat32 *fat32, t_element_fat *elemento, int cantClusters);

		uint32_t cargar_entradas(t_fat32 *fat32, uint32_t numeroCluster, t_lista *entradas);

		t_elem_directorio  *leer_entrada_directorio(t_fat32 *fat32, t_dir_entry *entrada, char *nombre, uint16_t tamNombre);

		t_elem_archivo *leer_entrada_archivo(t_fat32 *fat32, t_file_entry *entrada, char *nombre, uint16_t tamNombre);

		uint16_t leer_entrada_LFN(t_fat32 *fat32, uint32_t numeroCluster, int *iEntrada, char *nombreEntrada);

		t_longFileName_entry *crear_entrada_LFN(t_fat32 *fat32, uint32_t numeroCluster, int iEntrada, char *nombreEntrada);

		void lectura_de_elemento(t_entry *entrada, t_element_fat *elemento, char* nombre, uint16_t tamNombre);

		void configurar_name(char *nombreElemento, char *nombre, char *extension, char *nombreEntrada, uint16_t tamNombre);

		void get_tiempo_archivo(t_time horario, uint16_t byteTime);

		void get_fecha_archivo(t_date fecha, uint16_t byteDate);

		void truncar_archivo(t_fat32 *fat32, char *path, off_t length);

		bool es_directorio(t_entry *entrada, char *nombre);

		uint32_t unirHi_Lo(t_entry *entrada);

		void imprimir_listado(t_campoLista *lista);

		void listar_directorio(t_fat32 *fat32, char *path);

		void renombrar_archivo(t_fat32 *fat32, char *pathNombreAntiguo, char *pathNombreNuevo);

		char *buscar_enRoot(t_fat32 *fat32, char *path, char **vector, int cantElem);

		config leerConfig (char* archivoDeConfiguracion);









#endif /* FS_H_ */
